home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / ctask.zip / SIO.H < prev    next >
C/C++ Source or Header  |  1988-07-01  |  5KB  |  112 lines

  1. /*
  2.    SIO.H - CTask - Serial I/O interface routine definitions.
  3.  
  4.    Public Domain Software written by
  5.       Thomas Wagner
  6.       Patschkauer Weg 31
  7.       D-1000 Berlin 33
  8.       West Germany
  9. */
  10.  
  11.  
  12. #define XON       0x11
  13. #define XOFF      0x13
  14.  
  15. /* Parity values for "v24_change_parity" */
  16.  
  17. #define PAR_NONE  0x00
  18. #define PAR_EVEN  0x18
  19. #define PAR_ODD   0x08
  20. #define PAR_MARK  0x28
  21. #define PAR_SPACE 0x38
  22.  
  23. /* Modem control bits for "v24_watch_modem" */
  24.  
  25. #define CTS       0x10
  26. #define DSR       0x20
  27. #define RI        0x40
  28. #define CD        0x80
  29.  
  30. /* Values for "v24_protocol" */
  31.  
  32. #define XONXOFF   0x01
  33. #define RTSCTS    0x02
  34.  
  35. /* Internal structures */
  36.  
  37. typedef struct s_port_data far *portptr;
  38. typedef struct s_sio_datarec far *sioptr;
  39.  
  40. typedef struct s_port_data {
  41.                            portptr     next;    /* Next defined port */
  42.                            int         pnum;    /* Internal Port ID */
  43.                            sioptr      sio;     /* SIO control block */
  44.                            int         base;    /* Port base */
  45.                            byte        irq;     /* IRQ level */
  46.                            byte        vector;  /* Interrupt vector number */
  47.                            } port_data;
  48.  
  49.  
  50. typedef struct s_sio_datarec {
  51.                sioptr   next;          /* Next link for shared IRQs */
  52.                farptr   savvect;       /* Interrupt vector save location */
  53.                portptr  port;          /* Port descriptor pointer */
  54.                int      port_base;     /* Port base I/O address */
  55.                int      r_xoff;        /* Receive disable (XOFF sent) */
  56.                int      t_xoff;        /* Transmit disable (XOFF received) */
  57.                     int        xoff_threshold; /* Pipe free threshold for XOFF */
  58.                     int        xon_threshold; /* Pipe free threshold for XON */
  59.                byte     clcontrol;     /* Current line control reg */
  60.                byte     cmodcontrol;   /* Current modem control reg */
  61.                byte     irqbit;        /* IRQ-Bit for this port */
  62.                byte     civect;        /* Interrupt Vector for this port */
  63.                byte     modstat;       /* Current modem status */
  64.                byte     wait_xmit;     /* Transmit delayed */
  65.                byte     xmit_pending;  /* Transmit in progress */
  66.                byte     rtsoff;        /* RTS turned off by protocol */
  67.                byte     overrun;       /* Pipe full on receive */
  68.                byte     modem_flags;   /* Transmit enable modem flags */
  69.                byte     flags;         /* Protocol flags */
  70.  
  71.                byte     save_lcon;     /* Previous line control value */
  72.                byte     save_mcon;     /* Previous modem control value */
  73.                byte     save_inten;    /* Previous interrupt control value */
  74.                byte     save_irq;      /* Previous interrupt bit value */
  75.                byte     save_bd1;      /* Previous baud rate lower byte */
  76.                byte     save_bd2;      /* Previous baud rate upper byte */
  77.  
  78.                wpipe    rcv_pipe;      /* Received characters */
  79.                pipe     xmit_pipe;     /* Transmit pipe */
  80.  
  81.                } sio_datarec;
  82.  
  83.  
  84. /* function prototypes */
  85.  
  86. extern int far v24_define_port (int base, byte irq, byte vector);
  87.  
  88. extern sioptr far v24_install (int port, int init,
  89.                                farptr rcvbuf, word rcvsize, 
  90.                                farptr xmitbuf, word xmitsize);
  91. extern void far v24_remove (sioptr sio, int restore);
  92. extern void far v24_remove_all (void);
  93.  
  94. extern void far v24_change_rts (sioptr sio, int on);
  95. extern void far v24_change_dtr (sioptr sio, int on);
  96. extern void far v24_change_baud (sioptr sio, long rate);
  97. extern void far v24_change_parity (sioptr sio, int par);
  98. extern void far v24_change_wordlength (sioptr sio, int len);
  99. extern void far v24_change_stopbits (sioptr sio, int n);
  100. extern void far v24_watch_modem (sioptr sio, byte flags);
  101. extern void far v24_protocol (sioptr sio, int prot, 
  102.                               word offthresh, word onthresh);
  103.  
  104. extern int far v24_send (sioptr sio, byte ch, dword timeout);
  105. extern int far v24_receive (sioptr sio, dword timeout);
  106. extern int far v24_overrun (sioptr sio);
  107. extern int far v24_check (sioptr sio);
  108. extern int far v24_modem_status (sioptr sio);
  109. extern int far v24_complete (sioptr sio);
  110. extern int far v24_wait_complete (sioptr sio, dword timeout);
  111.  
  112.